/**
 * @文件名 ValidateUtil.java
 * @包名 com.ykfk.cngrain.tbw.util
 * @说明 验证等处理工具类
 * @作者 wdfang
 * @时间 2013-2-5 下午11:11:37
 * @版本 V1.0
 */ 
package com.fang.yttz.util;
/**
 * @类名 ValidateUtil
 * @描述  验证等处理工具类
 * @作者 wdfang
 * @日期 2013-2-5 下午11:11:37
 * ========修改日志=======
 *
 */
public class ValidateUtil {
	/**
	 * 
	 * @名称 isEmpty
	 * @描述 null或""时返回 true 否则返回 false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:24:58
	 */
	public  static boolean isEmpty(String validate){
		if(validate == null||"".equals(validate.trim())){
			return true;
		}
		return false;
	}
	/**
	 * 
	 * @名称 isFloat
	 * @描述 float型时返回true 否则返回false 
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:25:34
	 */
	public static boolean isFloat(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("\\d+\\.?\\d+");
	}
	/**
	 * 
	 * @名称 isInt
	 * @描述 int时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:25:50
	 */
	public static boolean isInt(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("\\d+");
	}
	/**
	 * 
	 * @名称 isPhone
	 * @描述 是手机时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:26:11
	 */
	public static boolean isPhone(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("\\d{11}");
	}
	/**
	 * 
	 * @名称 isTel
	 * @描述 是固话方式时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:26:30
	 */
	public static boolean isTel(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("(\\d{3,4}\\-?)?\\d{7,8}(\\-?\\d+)?");
	}
	/**
	 * 
	 * @名称 isEmail
	 * @描述 是email方式时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:26:47
	 */
	public static boolean isEmail(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
	}
	/**
	 * 
	 * @名称 isChar
	 * @描述  是字符串的方式时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:27:02
	 */
	public static boolean isChar(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("[a-zA-Z]+");
	}
	/**
	 * 
	 * @名称 isChinese
	 * @描述 是汉字的方式时返回的是true 否则返回的是false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:27:27
	 */
	public static boolean isChinese(String validate) {
		if(isEmpty(validate))
			return true;
		return validate.matches("[\u4e00-\u9fa5]+");
	}
	/**
	 * 
	 * @名称 isDate
	 * @描述 时间格式yyyy-MM-dd true 否则 false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:27:46
	 */
	public static boolean isDate(String validate) {
		if(isEmpty(validate))
			return true;
		if (validate.matches("\\d{4}\\-{1}\\d{2}\\-{1}\\d{2}")) {
			String[] arr = validate.split("-");
			int year = Integer.parseInt(arr[0]);
			int month = Integer.parseInt(arr[1]);
			int day = Integer.parseInt(arr[2]);
			// 1753 <= 年份
			if (year < 1753) {
				return false;
			}
			// 1 <= 月份 <= 12，1 <= 日期 <= 31
			if (!((1 <= month) && (12 >= month) && (31 >= day) && (1 <= day))) {
				return false;
			}
			// 润年检查
			if (!((year % 4) == 0) && (month == 2) && (day == 29)) {
				return false;
			}
			// 7月以前的双月每月不超过30天
			if ((month <= 7) && ((month % 2) == 0) && (day >= 31)) {
				return false;
			}
			// 8月以后的单月每月不超过30天
			if ((month >= 8) && ((month % 2) == 1) && (day >= 31)) {
				return false;
			}
			// 2月最多29天
			if ((month == 2) && (day >= 30)) {
				return false;
			}
			return true;
		} else {
			return false;
		}
	}
	/**
	 * 
	 * @名称 isShortDate
	 * @描述  时间格式yyyy-MM true 否则 false
	 * @参数 @param validate
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午10:41:40
	 */
	public static boolean isShortDate(String validate){
		if(isEmpty(validate))
			return true;
		if (validate.matches("\\d{4}\\-{1}\\d{2}")) {
			String[] arr = validate.split("-");
			int year = Integer.parseInt(arr[0]);
			int month = Integer.parseInt(arr[1]);
			// 1753 <= 年份
			if (year < 1753) {
				return false;
			}
			// 1 <= 月份 <= 12
			if (!((1 <= month) && (12 >= month))) {
				return false;
			}
			return true;
		} else {
			return false;
		}
	}
	/**
	 * 
	 * @名称 isContChinese
	 * @描述 有中文字符 true 否则 false
	 * @参数 @param s
	 * @参数 @return
	 * @返回值 boolean
	 * @作者 wdfang
	 * @时间 2013-2-19 上午11:33:12
	 */
	public static boolean isContChinese(String s) {
		boolean flag = false;
		char[] charArray = s.toCharArray();
		for (int i = 0; i < charArray.length; i++) {
			if ((charArray[i] >= 0x4e00) && (charArray[i] <= 0x9fbb)) {
				flag = true;
				break;
			}
		}
		return flag;
	}
}
